Hi! 大家好,我是Eric,上篇教大家如何用Python畫長條圖了,這篇是Python資料視覺化的最後一篇,要來教大家如何同時呈現多張圖。
後續文章會朝向機器學習的方向,請大家期待吧!!
1. 載入套件。
import numpy as np # 資料處理套件
import pandas as pd # 資料處理套件
import matplotlib.pyplot as plt # 資料視覺化套件
2. 載入資料。
TRA = pd.read_csv("passenger number of TRA(105-106).csv")
TRA.head(3) # 顯示前3筆資料
3. 資料操作。
由於原資料的載客數單位為人次,為利視覺化結果簡潔,將載客數改為百萬計
pr = [None] * len(TRA["passenger"]) # 建立一個空列表,數量為載客數欄位資料的數量
# 以for迴圈逐一將載客數資料自左向右取5個字元
for i in range(len(TRA["passenger"])):
pr[i] = TRA["passenger"][i][:5]
# 以for迴圈逐一將載客數資料中的","替換成"."
for i in range(len(pr)):
pr[i] = pr[i].replace(",", ".")
# 將原資料替換掉,並重新命名欄位名稱
TRA["passenger"] = pr
TRA.rename(columns = {"passenger" : "passenger(million)"}, inplace = True)
4. 開始畫圖。
year = str(np.unique(TRA["year"])) # 將年份資料單獨取出
year = year.split(" ") # 以空白字元分隔年分資料
# 畫第一張圖,位於左上角
# 其中pd.DataFrame(資料,dtype=np.float)為將載客數字串類別更改為float類別
# 其中TRA[TRA.station == "Taipei"]["passenger(million)"]為擷取出台北站資料,再擷取出載客數欄位資料
plt.subplot(2, 2, 1) # plt.subplot(列數, 行數, 圖形編號)設定第一張圖位置
plt.plot(year, pd.DataFrame(TRA[TRA.station == "Taipei"]["passenger(million)"],dtype=np.float)
,"r") # plt.plot(x軸資料, y軸資料, 線顏色)
plt.title("Taipei", {'fontsize':15}) # 設定圖標題及其文字大小
# 畫第二張圖,位於右上角
plt.subplot(2, 2, 2)
plt.plot(year, pd.DataFrame(TRA[TRA.station == "Taoyuan"]["passenger(million)"],dtype=np.float)
,"g--")
plt.title("Taoyuan", {'fontsize':15})
# 畫第三張圖,位於左下角
plt.subplot(2, 2, 3)
plt.plot(year, pd.DataFrame(TRA[TRA.station == "Zhongli"]["passenger(million)"],dtype=np.float)
,"b-.")
plt.title("Zhongli", {'fontsize':15})
# 畫第四張圖,位於右下角
plt.subplot(2, 2, 4)
plt.plot(year, pd.DataFrame(TRA[TRA.station == "Tainan"]["passenger(million)"],dtype=np.float)
,"m:")
plt.title("Tainan", {'fontsize':15})
# 儲存圖檔
plt.savefig("Passengers of the top 4 TRA station.jpg", # 儲存圖檔
bbox_inches='tight', # 去除座標軸占用的空間
pad_inches=0.0) # 去除所有白邊
plt.close() # 關閉圖表
5. 大功告成。
P.S. 本篇程式碼參考台灣資料科學年會-手把手打開Python資料分析大門,並利用網路實際開放資料執行